'''读取文件相关的类定义'''

from data_define import Record
import json

# 定义一个抽象类来左顶层设计
class FileReader:

    def read_data(self) -> list[Record]:
        '''读取文件的数据，读取每条数据转换为Record对象，封装为list返回'''
        pass

# 定义对应的子类去实现具体的功能
# 解析文本数据
class TextFileReader(FileReader):

    def __init__(self, path):
        self.path = path

    # 重写父类的方法
    def read_data(self) -> list[Record]:
        rfile = open(self.path, 'r', encoding='UTF-8')
        record_list: list[Record] = []
        for item in rfile.readlines():
            item = item.strip()         # 消除字符串中的回车 \\n
            sptStr = item.split(",")    #  切割字符串
            record = Record(sptStr[0], sptStr[1], sptStr[2], sptStr[3])
            #print(record.__dict__)
            record_list.append(record)
        rfile.close()
        return record_list

# 解析JSON文本数据
class JSONFileReader(FileReader):

    def __init__(self, path):
        self.path = path

    def read_data(self) -> list[Record]:
        with open(self.path, 'r', encoding='UTF-8') as rfile:
            record_list: list[Record] = []
            for item in rfile.readlines():
                item = item.strip()         #消除字符串中的回车 \\n
                item = json.loads(item)     #将json转为dict字典
                record = Record(item.get('date'), item.get('order_id'), item.get('money'), item.get('province'))
                #print(record.__dict__)
                record_list.append(record)
        rfile.close()
        return record_list



# 测试函数
if __name__ == '__main__':
    text_file_reader = TextFileReader('D:\\yfxdeve\\python\\pyProject\\python\\python入门\\数据分析\\demo1\\2011一月销售数据.txt')
    textList = text_file_reader.read_data()
    print(len(textList))

    print('---------------------------------------------')
    json_file_reader = JSONFileReader('D:\\yfxdeve\\python\\pyProject\\python\\python入门\\数据分析\\demo1\\2011二月销售数据json.txt')
    jsonList = json_file_reader.read_data()
    print(jsonList)

